/** Project 3
 *
 * @Group Members
 * 	Brentton Garber - mrbrentgarber@gmail.com
 * 	Georgii Tkachuk - georgii.t@gmail.com
 * 	Lucas Bridge - ltbridge@asu.edu
 * 	Austin Burnham - burnhamaustin@gmail.com
 * 	Kevin Greenberg - kgreenbe@asu.edu
 * @Revision
 *
 * @Since
 *
 */

#ifndef CSE220_project3_Scanner_h
#define CSE220_project3_Scanner_h

#include <fstream>
#include "common.h"
#include "Print.h"
using namespace std;

class Print;
class Tokenizer;

class Scanner
{
public:
    Scanner(const string &);
    void ScanFile(Tokenizer &);
    char GetCharacter();
    void BackUpCharacter();
    CharCode GetCharType(char &);
    ~Scanner();
    
private:
    Print *printer;
    FILE *sourceFile;
    string sourceLine;
    CharCode charTable[256];
    int sourceLineIndex;
    
    bool GetSourceLine();
    void SkipComment();
};

#endif
